/*
 * Zuerst spaltet eine Zerteilmaschine ein Stueck Holz in 10 rohe Staebchen
 * Die Zerteilmaschine wird mit einer fixen Anzahl an Holzstuecken gestartet. 
 * Nachdem das gesamte Material verarbeitet wurde, sollen die Threads fuer die Maschinen 
 * und Behaelter automatisch stoppen und (ebenso wie nach einem Notstopp) 
 * die Anzahl der verarbeiteten bzw. sich in den Behaeltern befindenden Holzstuecke, Staebchen und Packungen ausgeben.
 */
public class Zerteilmaschine extends Thread {

	// Benoetigte Zeit fuer einen schritt//
	private int runtime = 0;

	private Fabrik f;
	
	private int processed; //speichert die Anzahl der Stuecke  die sich in der Maschine befinden

	/*
	 * Konstruktor mit benoetigter zeit in ms fuer arbeitsschritt
	 */
	public Zerteilmaschine(int runtime, Fabrik fabrik) {
		this.f = fabrik;
		this.runtime = runtime;
		this.processed = 0;
	}

	public void run()
	{
		while(f.getHolz())
		{
			this.processed += 10;
			//Zeit die fuer arbeitsschritt benoetigt wird//
			try {
				sleep(this.runtime); //Arbeitszet simulieren mittels sleep
			}
			catch(InterruptedException e)
			{ 
				return;
			}
			for(int i = 0; i <10 ; i++) //Staebchen in den Container legen
			{
				while(!f.addRohStaebchen())
				{
					try
						{
						sleep(f.v1.getRuntime());
						}
						catch(InterruptedException e)
						{ 
							return;
						}
					}
				this.processed--;
				}
				
			}
	}

	//Getter fuer Runtime
	//IN: void
	//Out: int (Runtime)
	public int getRuntime() {
		return this.runtime;
	}
	
	//Getter fuer die Anzahl der Stuecke die sich gerade in der Maschine befinden
	//IN: void
	//Out: int (Processed)
	public int getprocessed()
	{
		return this.processed;
	}
}
